Auto Save
Auto saveにもいくつかの種類がある
その値を直接DBに入れちゃうのか、localStorageなどに一時的に保持するだけなのか
つまり、
①submitの代わりとしてのauto saveなのか、
②大きい入力が途中で飛ぶことを防止するためのauto saveなのか、
で意味合いが変わってくる
fieldがたくさんある系のUIだと、②はやるべきだけど、①をやるのはしんどい
validation errorなどがある状態のものをDBに入れちゃうわけにも行かない
アプリケーションの例
scrapbox
google sheets
google docs
notion
こうやって見るとNotinすげえなmrsekut.icon
1個1個がblockなので、その単位でDBにcommitすれば良い、という実装になってる
atomicなので、fieldをまたぐvalidaiton errorとかが存在しない(できない)のか
figma
etc.
いろいろ気にしないといけないことがある
保存の頻度や、保存場所を指定できる
同じ対象を複数人が同時に編集した際の対応
保存したデータの旧versionにアクセスや復元をできるか
オフラインで編集した際の対応
前回のアップロードよりも先に、今回のアップロードが完了すると、データが上書きされてしまう
自動保存の状態をユーザに伝える必要がある
Scrapboxで言えば右下のやつ
データ保存中に起きたerrorにどう対処するか
saveのdebounce
DBの扱い
どうしてもnullableにしないといけなくなったりする
一部を更新しただけで全てを(?)更新しないといけない
tableの設計にも依る
validationの扱い
明示的なsubmitするactionが存在しないので、リアルタイムでvalidation errorを表示することになる
すごい問題、というわけではないが、UIの要件と合わせるのが難しいパターンもありそう